package com.yunkeji.api.call.service;

import com.yunkeji.api.call.bo.*;
import com.yunkeji.api.call.vo.*;
import com.yunkeji.dao.domain.BaseId;

public interface CallService {
    /**
     * 开始通话
     *
     * @author 老张
     * @param startCallBo
     */
    CallSheetVo startCall(StartCallBo startCallBo);

    /**
     * 被叫振铃
     *
     * @author 老张
     * @param bo
     */
    void startRinging(CallProcessBo bo);

    /**
     * 主叫确认
     *
     * @author 老张
     * @param bo
     * @return
     */
    StartAnswerVo startAnswer(StartAnswerBo bo);

    /**
     * 主叫确认
     *
     * @author 老张
     * @param bo
     */
    StartConfirm startConfirm(CallProcessBo bo);
    /**
     * 电话挂断
     *
     * @author 老张
     * @param bo
     */
    StartCancel startCancel(StartCancelBo bo);

    /**
     * 通话评分
     *
     * @author 老张
     * @param bo
     */
    void startScore(StartScoreBo bo);

    /**
     * 通话计费
     *
     * @author 老张
     * @param bo
     */
    StartBill startBill(StartBillBo bo);

    /**
     * 通话质检
     *
     * @author 老张
     * @param bo
     */
    CheckVo startCheck(StartCheck bo);

    /**
     * 通话回调-进入房间
     *
     * @author 老张
     */
    void callbackEnter(RtcRoomCallBackBo rtcRoomCallBackBo);
    /**
     * 通话回调-离开房间
     *
     * @author 老张
     */
    void callbackLeave(RtcRoomCallBackBo rtcRoomCallBackBo);

    /**
     * 加入通话
     *
     * @author 老张
     */
    StartJoinVo startJoin(StartJoinBo startJoinBo);

    /**
     * 检查是否有正在通话的话单
     *
     * @author 老张
     */
    QueryCallSheetVo queryCallSheet();

    /**
     * 录音任务 查询主叫或者被叫的信息
     *
     * @author 老张
     */
    QueryUserVo queryUser(BaseId baseId);

    /**
     * 开始录音
     *
     * @author 老张
     */
    void startRecord(RtcRecordCallBackBo bo);
    /**
     * 语音内容实时监测
     *
     * @author 老张
     */
    void rtcContentCheck(RtcContentCheckBo rtcContentCheck);
}
